package jee.boot.common.basic;

import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * DAO支持类实现
 * 
 * @author zhilei.wang
 *
 * @param <T>
 */
public interface TreeDao<T extends TreeEntity<T>> extends CrudDao<T> {

	/**
	 * 找到所有子节点
	 * 
	 * @param entity
	 * @return
	 */
	@Select("${findByParentIdsLikeSql}")
	List<T> findByParentIdsLike(T entity);

	/**
	 * 更新所有父节点字段
	 * 
	 * @param entity
	 * @return
	 */
	@Update("${updateParentIdsSql}")
	int updateParentIds(T entity);
	/**
	 * 查询数据列表
	 *
	 * @param entity
	 * @return
	 */
	@Select("<script>${findListSql} <where> ${where} <if test=\"parentIds != null and parentIds != ''\"> AND a.parent_ids like #{parentIds} </if> </where>  ${orderBySql}</script>")
	List<T> findList(T entity);
}